/*
 * ボールの位置を管理するデータクラス
 */
package com.hackathon;


import gnavi4j.Gnavi;
import gnavi4j.RestSearchParam;
import gnavi4j.Restaurant;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;

import android.util.Log;

public class DragonData{
	
	private static DragonData data = new DragonData();
	
	public static final int NUM_BALL = 7;
	private DragonBall[] ballLocations;	
	
	//Singletonパターン：newで作成不可
	private DragonData(){
		ballLocations = new DragonBall[NUM_BALL];
		for(int i=0; i<NUM_BALL; i++){
			ballLocations[i] = new DragonBall();
		}
		
		//適当バージョン：本当はここはGPSを使う
		ballLocations[0].setLat( 35.626294);	//0
		ballLocations[0].setLng(139.742062);
		ballLocations[1].setLat( 35.659044);	//1
		ballLocations[1].setLng(139.700568);
		ballLocations[2].setLat( 35.660262);	//2
		ballLocations[2].setLng(139.729548);
		ballLocations[3].setLat( 35.65861 );	//3
		ballLocations[3].setLng(139.745447);
		ballLocations[4].setLat( 35.716828);	//4
		ballLocations[4].setLng(139.770154);
		ballLocations[5].setLat( 35.632546);	//5
		ballLocations[5].setLng(139.881328);
		ballLocations[6].setLat( 35.460298);	//6
		ballLocations[6].setLng(139.628162);
	}
	
	//DragonDataインスタンスの取得メソッド
	public static DragonData getInstance(){
		return data;
	}
	
	//ボールの位置を取得する
	public DragonBall[] getBallLocations(){
		return ballLocations;
	}

	//新規検索メソッド
	//ぐるなびAPIにクエリを投げて、検索結果7件でボールの位置を更新
	public void search(String query, double lat, double lng){
	
		Log.v("Tag", query);
		System.out.println("testtest");
		
		//ファイルの取得テスト：OK
		try{
			URL url = new URL("http://api.gnavi.co.jp/ver1/RestSearchAPI/?keyid=8701d01e4964272ddd9a9de57f7083c8&freeword=bar");
			InputStream in = url.openStream();
			InputStreamReader isr = new InputStreamReader(in, "UTF-8");
			BufferedReader br = new BufferedReader(isr);

			String line;
			while( (line=br.readLine())!=null ){
				System.out.println(line);
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		
		//ぐるなびAPIキー
		String apiKey = "8701d01e4964272ddd9a9de57f7083c8";
		Gnavi gnavi = new Gnavi(apiKey);
		RestSearchParam params = new RestSearchParam();
		params.setFreeword( query );
		//params.setLatitude(lat);
		//params.setLongitude(lng);
		//params.setRange(1);
		ArrayList<Restaurant> list = gnavi.restSearch(params);
		Log.v("Tag", Integer.toString(list.size()));
		for(int i=0; i<list.size(); i++){
			Log.v("Tag", list.get(i).getName()+"("+list.get(i).getLatitude()+","+list.get(i).getLongitude()+")");
		}
		
		for(int i=0; i<NUM_BALL; i++){
			ballLocations[i].setLat(list.get(i).getLatitude());
			ballLocations[i].setLng(list.get(i).getLongitude());
		}
	}
	
}
